\section{Overview}\label{index_intro_sec}
NFsim is fully generalized stochastic reaction network simulator designed to handle systems with a large (or even infinite) state space. It has a number of features that make it ideal for handling large and complex biochemical systems, such as functionally defined rate laws and reactions that depend on a local context. NFsim is designed to operate with the BioNetGen Language ({\tt http://bionetgen.org/}). The new version of BNG is able to generate an XML encoded form of the BNG Language, which NFsim can take as input.

For more details on setting up, running, and getting output from an NFsim simulation see the User Manual. The User Manual also has additional information for new developers. The Manual is available online along with examples here: {\tt http://emonet.biology.yale.edu/NFsim}\section{Command Line Argument List}\label{index_key}
Arguments can be provided to NFsim through the command line. Below is a partial list of the available commands and a brief description of what they do. For more details, see the NFsim user manual.

-help = outputs a helpful message to the console

-xml [filename] = specifies the xml file to read

-sim [Duration in sec] = specifies the length of time to simulate the system

-oSteps [num of steps] = specifies the number of times to output during the simulation

-eq [Duration in sec] = specifies the length of time to equilibriate before simulating

-o [filename] = specifies the name of the output file

-v = verbose output when reading an xml file and building a system

-b = output in binary (faster, but output is not human readable)

-utl [integer] = universal traversal limit, see manual

-notf = disables On the Fly Observables, see manual\section{Developers}\label{index_devel_sec}
To begin developing and extending NFsim, the best place to start looking is in the src/NFtest/simple\_\-system directory. Here you'll find two files, \doxyref{simple\_\-system.hh}{p.}{simple__system_8hh} and \doxyref{simple\_\-system.cpp}{p.}{simple__system_8cpp}. Together, this code specifies a simple enzymatic type reaction that is completely hard coded. This will give you an idea of the basic classes and functions used to define, initialize, run, and output a simulation. From there, you can dive into the specific classes and functions that you need to work with. Details about how to run the simple\_\-system example are given in these files.

All of the other main classes are defined in the \doxyref{NFcore}{p.}{namespaceNFcore} namespace and are found in the \doxyref{NFcore}{p.}{namespaceNFcore} directory and the NFreactions directory. The \doxyref{NFcore}{p.}{namespaceNFcore} directory contains the basic structure of the simulation engine while the NFreactions directory contains the classes associated with actually executing rules and transforming molecules. \doxyref{NFinput}{p.}{namespaceNFinput} contains what's needed for the xml parser (built using the TinyXML package) and the command line parser. \doxyref{NFutil}{p.}{namespaceNFutil} primarily contains a nice implementation of the Mersenne Twister random number generator which should be used for all random number generation in NFsim. NFoutput is more sparse as it deals only with handling the more complicated output required of groups and complexes. (Basic outputting is handled easily with the System and Observable classes in the \doxyref{NFcore}{p.}{namespaceNFcore} namespace).

Another note for developers: class functions and member variables are generally well commented in the header file in which they are declared. So if you are lost in some source file, and you think there aren't any comments, be sure to check the header file before you ask for help.\section{Authors \& Acknowledgments}\label{index_author_sec}
The NFsim code was written and developed by Michael Sneddon with help from James Faeder and Thierry Emonet. James Faeder wrote the extended BioNetGen code that can output XML encodings of the BNGL.

Special thanks to other members of the Emonet lab, particularly William Pontius, Garrit Jentsch, and Oleksii Sliusarenko for helpful feedback. For questions or assistance with the code, please contact {\tt michael.sneddon@yale.edu}. 